---
id: lock-stores
sidebar_label: Lock Stores
title: Lock Stores
description: Messages that are being processed lock Rasa for a given conversation ID to ensure that multiple incoming messages for that conversation do not interfere with each other. Rasa provides multiple implementations to maintain conversation locks.
---

Rasa uses a ticket lock mechanism to ensure that incoming messages for a given
conversation ID are processed in the right order, and locks conversations while
messages are actively processed. This means multiple Rasa servers can
be run in parallel as replicated services, and clients do not necessarily need to
address the same node when sending messages for a given conversation ID.

## InMemoryLockStore (default)


* **Description**

  `InMemoryLockStore` is the default lock store. It maintains conversation locks
  within a single process.

  :::note
  This lock store should not be used when multiple Rasa servers are run
  parallel.

  :::



* **Configuration**

  To use the `InMemoryTrackerStore` no configuration is needed.


## RedisLockStore


* **Description**

  `RedisLockStore` maintains conversation locks using Redis as a persistence layer.
  This is the recommended lock store for running a replicated set of Rasa servers.



* **Configuration**

  To set up Rasa with Redis the following steps are required:

  1. Start your Redis instance

  2. Add required configuration to your `endpoints.yml`

     ```yaml-rasa
     lock_store:
         type: "redis"
         url: <url of the redis instance, e.g. localhost>
         port: <port of your redis instance, usually 6379>
         password: <password used for authentication>
         db: <number of your database within redis, e.g. 0>
         key_prefix: <alphanumeric value to prepend to lock store keys>
     ```

  3. To start the Rasa Core server using your Redis backend, add the `--endpoints`
  flag, e.g.:

  ```bash
  rasa run -m models --endpoints endpoints.yml
  ```



* **Parameters**

  * `url` (default: `localhost`): The url of your redis instance

  * `port` (default: `6379`): The port which redis is running on

  * `db` (default: `1`): The number of your redis database

  * `key_prefix` (default: `None`): The prefix to prepend to lock store keys. Must
     be alphanumeric

  * `password` (default: `None`): Password used for authentication
    (`None` equals no authentication)

  * `use_ssl` (default: `False`): Whether or not the communication is encrypted

  * `socket_timeout` (default: `10`): Time in seconds after which an
     error is raised if Redis doesn't answer
